package com.wd.elec.service.impl;

import java.util.List;

import com.wd.common.utils.DateUtils;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import com.wd.elec.mapper.StaffInfoMapper;
import com.wd.elec.domain.StaffInfo;
import com.wd.elec.service.IStaffInfoService;

/**
 * 员工信息Service业务层处理
 *
 * @author liumingkun
 * @date 2023-11-08
 */
@Service
public class StaffInfoService implements IStaffInfoService {
    @Resource
    private StaffInfoMapper staffInfoMapper;

    /**
     * 查询员工信息
     *
     * @param staffId 员工信息主键
     * @return 员工信息
     */
    @Override
    public StaffInfo selectStaffInfoByStaffId(Long staffId) {
        return staffInfoMapper.selectStaffInfoByStaffId(staffId);
    }

    /**
     * 查询员工信息列表
     *
     * @param staffInfo 员工信息
     * @return 员工信息
     */
    @Override
    public List<StaffInfo> selectStaffInfoList(StaffInfo staffInfo) {
        return staffInfoMapper.selectStaffInfoList(staffInfo);
    }

    /**
     * 查询已分配考勤分组的员工信息列表
     *
     * @param staffInfo 员工信息
     * @return 员工信息集合
     */
    public List<StaffInfo> selectAllocatedGroupList(StaffInfo staffInfo) {
        return staffInfoMapper.selectAllocatedGroupList(staffInfo);
    }

    /**
     * 查询未分配考勤分组的员工信息列表
     *
     * @param staffInfo 员工信息
     * @return 员工信息集合
     */
    public List<StaffInfo> selectUnAllocatedGroupList(StaffInfo staffInfo) {
        return staffInfoMapper.selectUnAllocatedGroupList(staffInfo);
    }

    /**
     * 移除员工的考勤班组信息
     *
     * @param staffInfo 员工信息
     * @return 结果
     */
    @Override
    public int staffGroupCancel(StaffInfo staffInfo) {
        staffInfo.setUpdateTime(DateUtils.getNowDate());
        return staffInfoMapper.staffGroupCancel(staffInfo);
    }


    /**
     * 新增员工信息
     *
     * @param staffInfo 员工信息
     * @return 结果
     */
    @Override
    public int insertStaffInfo(StaffInfo staffInfo) {
        staffInfo.setCreateTime(DateUtils.getNowDate());
        return staffInfoMapper.insertStaffInfo(staffInfo);
    }

    /**
     * 修改员工信息
     *
     * @param staffInfo 员工信息
     * @return 结果
     */
    @Override
    public int updateStaffInfo(StaffInfo staffInfo) {
        staffInfo.setUpdateTime(DateUtils.getNowDate());
        return staffInfoMapper.updateStaffInfo(staffInfo);
    }

    /**
     * 批量删除员工信息
     *
     * @param staffIds 需要删除的员工信息主键
     * @return 结果
     */
    @Override
    public int deleteStaffInfoByStaffIds(Long[] staffIds) {
        return staffInfoMapper.deleteStaffInfoByStaffIds(staffIds);
    }

    /**
     * 删除员工信息信息
     *
     * @param staffId 员工信息主键
     * @return 结果
     */
    @Override
    public int deleteStaffInfoByStaffId(Long staffId) {
        return staffInfoMapper.deleteStaffInfoByStaffId(staffId);
    }

    @Override
    public int cancelAllStaffGroup(Long[] staffIds) {
        return staffInfoMapper.cancelAllStaffGroup(staffIds);
    }

    /**
     * 批量将员工添加到考勤组
     *
     * @param groupId  考勤分组Id
     * @param staffIds 员工信息主键
     * @return 结果
     */
    @Override
    public int authStaffSelectAll(Long groupId, Long[] staffIds) {
        return staffInfoMapper.authStaffSelectAll(groupId, staffIds);
    }
}
